Nel mondo di Rust, uno strumento CLI robusto non è solo uno script singolo; è un piano progetto attentamente orchestrato Piano progetto. Per creare uno strumento come grep, dividiamo il nostro lavoro tra un Crate binario e un Crate libreria.
1. La metafora della macchina da caffè
Pensa a una macchina da caffè di fascia alta. Il file lib.rs contiene i meccanismi interni per scaldare l'acqua e macinare i chicchi—la "logica del motore". Il file main.rs è il pulsante esterno che l'utente preme—l'"interfaccia". Tenendoli separati, un tecnico può testare il riscaldatore (libreria) senza dover premere ogni volta il pulsante fisico (binario).
2. Costruzione dell'architettura del motore
Cominciamo con $ cargo new minigrep. Anche se questo crea un main.rs, dobbiamo introdurre manualmente src/lib.rs. Questa divisione architettonica garantisce che la nostra logica principale di ricerca rimanga sconnessa dal parsing della riga di comando, permettendo test più semplici e modularità.
3. Modularità testabile
Spostando la logica in lib.rs, sfruttiamo il framework di test di Rust per chiamare le funzioni della libreria in un ambiente controllato. Usiamo use minigrep; nel nostro binario per importare il motore mantenendo isolata la logica di analisi della riga di comando.